package cn.car.service;

import cn.car.domains.entity.VehicleCommonInfoEntity;

public interface VehicleCommonInfoService {

    /**
     * 新增车辆信息
     * @param vehicle 车辆信息实体
     * @return 新增车辆的ID
     */
    Long insert(VehicleCommonInfoEntity vehicle);

    /**
     * 根据id查询车辆信息
     * @param id id
     * @return 车辆信息实体，若不存在则抛异常
     */
    VehicleCommonInfoEntity getVehicleById(Long id);

    /**
     * 根据车牌号查询车辆信息
     * @param vehicleNumber 车牌号
     * @return 车辆信息实体，若不存在则抛异常
     */
    VehicleCommonInfoEntity getVehicleByNumber(String vehicleNumber);

    /**
     * 更新车辆信息
     * @param vehicle 车辆信息实体（需包含ID）
     * @throws cn.car.exception.CarAccessControlException 当参数错误或车辆不存在时抛出
     */
    void updateVehicle(VehicleCommonInfoEntity vehicle);

    /**
     * 根据ID删除车辆信息
     * @param id 车辆ID
     * @throws cn.car.exception.CarAccessControlException 当参数错误或车辆不存在时抛出
     */
    void deleteVehicle(Long id);


    VehicleCommonInfoEntity getVehicleByAssociationId(Long id);
}
